package tool

import (
	"fmt"
	"github.com/hajimehoshi/ebiten/v2/audio"
	"github.com/hajimehoshi/ebiten/v2/audio/mp3"
	"github.com/hajimehoshi/ebiten/v2/audio/wav"
	"log"
	"os"
)

var (
	audioContext      *audio.Context
	BgMusicPlayer     *audio.Player
	CoinMusicPlayer   *audio.Player
	OverMusicPlayer   *audio.Player
	BulletMusicPlayer *audio.Player
)

func init() {
	var err error
	// 创建音频上下文
	audioContext = audio.NewContext(44100)

	// 加载背景音乐文件
	bgMusic, err := os.Open("static/music/bgMusic.mp3")
	if err != nil {
		fmt.Println("背景音乐无法打开")
		panic(err)
	}

	// 解码背景音乐文件
	bgMusicDecoded, err := mp3.Decode(audioContext, bgMusic)
	if err != nil {
		fmt.Println("背景音乐解析失败")
		panic(err)
	}

	// 创建背景音频播放器
	BgMusicPlayer, err = audio.NewPlayer(audioContext, bgMusicDecoded)
	if err != nil {
		log.Fatal(err)
	}

	//加载金币音乐文件
	coinMusic, err := os.Open("static/music/coinMusic.mp3")
	if err != nil {
		fmt.Println("背景音乐无法打开")
		panic(err)
	}

	// 解码金币音乐文件
	coinMusicDecoded, err := mp3.Decode(audioContext, coinMusic)
	if err != nil {
		fmt.Println("背景音乐解析失败")
		panic(err)
	}

	// 创建金币音频播放器
	CoinMusicPlayer, err = audio.NewPlayer(audioContext, coinMusicDecoded)
	if err != nil {
		log.Fatal(err)
	}

	//加载碰撞结束音乐文件
	overMusic, err := os.Open("static/music/gameOverMusic.mp3")
	if err != nil {
		fmt.Println("game-over音乐无法打开")
		panic(err)
	}

	// 解码game-over音乐文件
	overMusicDecoded, err := mp3.Decode(audioContext, overMusic)
	if err != nil {
		fmt.Println("game-over音乐解析失败")
		panic(err)
	}

	// 创建game-over音频播放器
	OverMusicPlayer, err = audio.NewPlayer(audioContext, overMusicDecoded)
	if err != nil {
		log.Fatal(err)
	}

	//加载子弹音乐文件
	bulletMusic, err := os.Open("static/music/bulletMusic.wav")
	if err != nil {
		fmt.Println("背景音乐无法打开")
		panic(err)
	}

	// 解码子弹音乐文件
	bulletMusicDecoded, err := wav.DecodeWithoutResampling(bulletMusic)
	if err != nil {
		fmt.Println("子弹音乐解析失败")
		panic(err)
	}

	// 创建子弹音频播放器
	BulletMusicPlayer, err = audio.NewPlayer(audioContext, bulletMusicDecoded)
	if err != nil {
		log.Fatal(err)
	}

}

//func ChangeMusicState() {
//	if isMusicPaused {
//		// 在背景音乐停止时重新播放
//		err := BgMusicPlayer.Rewind()
//		if err != nil {
//			fmt.Println("背景音乐重新播放失败")
//			panic(err)
//		}
//		// 如果背景音乐已暂停，继续播放
//		//BgMusicPlayer.Play()
//		isMusicPaused = false
//	} else {
//		// 如果背景音乐正在播放，暂停播放
//		BgMusicPlayer.Pause()
//		isMusicPaused = true
//	}
//}
